package cn.gogoyc.org.basic.controller;

import cn.gogoyc.org.basic.util.AjaxResult;
import cn.gogoyc.org.basic.util.FastDfsUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * 上传需要  删除需要
 * 下载不需要 修改不需要--先删除再上传
 * @author Yang
 * @date 2023 /2/4 21:39
 */
@RestController
@RequestMapping("/fastDfs")
public class FastDfsController {

    /**
     * 上传文件
     * @param file the file
     * @return the ajax result
     */
    @PostMapping
    public AjaxResult uploadFile(@RequestPart MultipartFile file){
        try {
            //前端传来的获取文件名
            String oName = file.getOriginalFilename();
            //根据路径截取.字符后面的后缀 例如 .jpg .png
            String exeName = oName.substring(oName.lastIndexOf(".")+1);
            //将文件转为二进制,并且将后缀名声明,工具类为文件加工生成文件名及后缀
            String fileName = FastDfsUtils.upload(file.getBytes(), exeName);
            //返回转化好的路径
            return AjaxResult.me().setObj(fileName);
        } catch (Exception e) {
            e.printStackTrace();
            //失败范返回提醒
            return new AjaxResult("上传失败",false);
        }
    }

    /**
     * 删除文件
     * @param path the path
     * @return the ajax result
     */
    @DeleteMapping
    public AjaxResult deleteFile(@RequestParam("path") String path){
        try {
            //截取group1后的路径
            path = path.substring(1);
            //截取0下标后面的第一个/内容----group1
            String groupName = path.substring(0, path.indexOf("/"));
            //从第一个/截取到末尾,因为含头不含尾+1从第一个/后开始截取
            String fileName = path.substring(path.indexOf("/")+1);
            //找到group1服务器并且删除指定路径
            //例:groupName:group1
            //例:fileName:M00/03/8D/CgAIC2PeaLGAdLGBAABGIMszqeY585.png
            FastDfsUtils.delete(groupName,fileName);
            return new AjaxResult();
        } catch (Exception e) {
            e.printStackTrace();
            return new AjaxResult("删除失败",false);
        }
    }
}
